/// <reference path="./../storage/BaseStorage.ts" />
/// <reference path="./../storage/StorageMgr.ts" />
/// <reference path="./../utils/EventDispatcher.ts" />

namespace apeng {

    /**
     * 数据与数据逻辑处理
     * 通过 ModelMgr 供外部接口调用
    */
    export class BaseModule extends EventDispatcher {

        public moduleType: number = -1
        /**模块缓存 */
        public readonly storage = new BaseInstanceStorage(CStorageDefaultType, StorageMgr)

        /**
         * 模块激活
         * @param openUI 打开ui
         * @returns 
         */
        public hasEnable(openUI: boolean = false): boolean {
            return false
        }

        /**自身 new 时 */
        public onInstance?(): void

        /**初始化自身模块数据 可以引用其他模块实例 但不能调用或使用 */
        public onCreate?(): void
        /**所有 onCreate 执行完后 可引用模块 跑逻辑 */
        public onLogic?(): void
        /**所有 onLogic 执行完后 */
        public onComplete?(): void


    }
}